import pandas as pd
import datetime,os
from PIL import Image, ImageDraw, ImageFont


#判断授权有效时间
def 判断授权():
    # 定义开始日期和结束日期
    start_date = datetime.datetime(2024, 2, 20)
    end_date = datetime.datetime(2024, 3, 7)
    now = datetime.datetime.now()
    # 判断当前时间是否在指定日期之间
    if start_date <= now <= end_date:
        程序授权 = True
    else:
        程序授权 = False
    程序授权 = True
    return 程序授权

# 定义要遍历的目录
dir_path = "./图片包"
new_dir_path="./生成图片包"
try:
    os.mkdir(new_dir_path)
except:
    pass
文字素材路径="./文字素材.xls"
文字素材数据=pd.read_excel(文字素材路径)
def 合成图片(图片名,图片路径,保存路径):
    #根据图片名匹配文字要素
    商品名=图片名.split(".")[0]
    符合条件记录=文字素材数据[文字素材数据["商品名称"]==商品名].iloc[0].tolist()
    列数=len(符合条件记录)
    if 列数==0:
        print(f"该图片在excel表中没有匹配的文字说明：{商品名}")
    else:
        # 打开图片
        image = Image.open(图片路径)
        # 获取原图片的宽度和高度
        width, height = image.size
        # 创建一个空白的RGB图像，大小为原图片的宽度和高度加上文字的高度和预留的空白高度
        text_height =int(height/10)
        左侧预留空间=60
        文字宽度=35
        字体大小=20
        text_image = Image.new('RGB', (width, height +text_height*2+列数*(字体大小+10)), color='white')
        序号=0
        for 文字 in 符合条件记录:
            # 在空白图像上绘制文字
            draw = ImageDraw.Draw(text_image)
            font = ImageFont.truetype("msyh.ttc", 字体大小, encoding="unic")
            text = 文字
            draw.multiline_text((左侧预留空间, text_height+序号*文字宽度), text, font=font, fill='red',)
            序号 = 序号 + 1
        # 将原图片和文字图像合并
        result = Image.new('RGB', (width, height +text_height*2+列数*(字体大小+10)), color='white')
        result.paste(image, (0, 0))
        result.paste(text_image, (0, height))
        # 保存图像
        result.save(保存路径,"JPEG",quality=100)
        print(f"已生成图片：{图片名}")

if 判断授权():
    # 遍历目录下的所有文件
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            # 检查文件是否为图片文件
            if os.path.splitext(file)[1] in [".jpg", ".png", ".jpeg", ".gif"]:
                # 打印文件路径
                file_path = os.path.join(root, file)
                abs_path = os.path.abspath(file_path)  #图片路径
                save_path=abs_path.replace("\图片包","\生成图片包")
                # print(abs_path)
                # print(save_path)
                合成图片(file, abs_path, save_path)
    print("数据已生成,结束输入y")
    while input().lower() != 'y':
        break
